<template>
  <transition name="slide-up">
    <div class="setting-wrapper" v-show="menuVisible && settingVisible === 1">
      <div class="setting-theme">
        <div
          class="setting-theme-item"
          v-for="(item, index) in themeList"
          :key="index"
          @click="setTheme(index)"
        >
          <div
            class="preview"
            :class="{'selected': item.name === defaultTheme}"
            :style="{background: item.style.body.background}"
          ></div>
          <div class="text" :class="{'selected': item.name === defaultTheme}">{{item.alias}}</div>
        </div>
      </div>
    </div>
  </transition>
</template>

<script>
import { ebookMixin } from "../../utils/mixin";
import { themeList } from "../../utils/book";
import { saveTheme } from "../../utils/localStorage";
export default {
  mixins: [ebookMixin],
  computed: {
    //  定义成计算属性 的好处 这个计算的结果会缓存
    // themeList() {
    // 加入到mixin中去了
    //   return themeList(this);
    // }
  },
  data() {
    return {};
  },
  methods: {
    setTheme(index) {
      // 设置主题 更新vuex中的值
      const theme = this.themeList[index].name;

      this.setDefaultTheme(theme).then(() => {
        // 再更新阅读器的主题
        this.currentBook.rendition.themes.select(this.defaultTheme);
        this.initGlobalStyle() // 动态更新整个阅读器的主题
      });
      saveTheme(this.fileName, theme); // 存储到本地缓存
    }
  }
};
</script>

<style lang='scss' scoped>
@import "../../assets/styles/global.scss";
.setting-wrapper {
  position: absolute;
  bottom: px2rem(48);
  left: 0;
  z-index: 101;
  width: 100%;
  height: px2rem(90);
  background: white;
  box-shadow: 0 px2rem(-8) px2rem(8) rgba(0, 0, 0, 0.15);
  .setting-theme {
    height: 100%;
    display: flex;
    .setting-theme-item {
      flex: 1;
      display: flex;
      flex-direction: column;
      padding: px2rem(5);
      box-sizing: border-box;
      .preview {
        flex: 1;
        border: px2rem(1) solid #ccc;
        box-sizing: border-box;
        &.selected {
          box-shadow: 0 px2rem(4) px2rem(6) 0 rgba(0, 0, 0, 0.1);
        }
      }
      .text {
        flex: 0 0 px2rem(20);
        font-size: px2rem(14);
        color: #ccc;
        @include center;
        &.selected {
          color: #333;
        }
      }
    }
  }
}
</style>
